﻿Процедура ПриНачалеРаботыСистемы() Экспорт
	
	Если НЕ СистемаВзаимодействия.ИспользованиеДоступно() Тогда
		Возврат;
	КонецЕсли;
	
	ОбработчикФормированияКоманд = Новый ОписаниеОповещения("ОбработкаФормированияКоманд", ЭтотОбъект);
	СистемаВзаимодействия.ПодключитьОбработчикФормированияКоманд(ОбработчикФормированияКоманд);
	
КонецПроцедуры

Процедура ОбработкаДействияСообщения(Сообщение, Действие) Экспорт
	
	Если Действие = "Settings" Тогда
		ОткрытьФорму("ОбщаяФорма.НастройкаБота");
		Возврат;
	КонецЕсли;
	
	Если Действие = "CheckNow" Тогда
		БотСервер.НеотработанныеЗаказы();
		Возврат;
	КонецЕсли;
	
КонецПроцедуры

Процедура ОбработкаФормированияКоманд(Параметры, Команды, КомандаПоУмолчанию, ДопПараметры) Экспорт
	
	Если НЕ СистемаВзаимодействия.ПоддерживаетсяРаботаСВложениями() Тогда
		Возврат;
	КонецЕсли;
	#Если Не (МобильноеПриложениеКлиент Или МобильныйКлиент) Тогда
	Если Параметры.Источник = ИсточникКомандСистемыВзаимодействия.Вложение Тогда
		
		Команды.Добавить(Новый ОписаниеКомандыСистемыВзаимодействия(Неопределено));
		
		ДопПараметры = Новый Структура();
		ДопПараметры.Вставить("Вложение", Параметры.Вложение);
		ДопПараметры.Вставить("Обсуждение", Параметры.Обсуждение);
		ДопПараметры.Вставить("УстановитьКартинку", Истина);
		
		Команда = Новый ОписаниеКомандыСистемыВзаимодействия(
			Новый ОписаниеОповещения("ДобавитьФайлККарточкеТовара", ЭтотОбъект, ДопПараметры),
			НСтр("ru = 'Установить как картинку товара'", "ru"));
		Команда.Доступность = СтрНачинаетсяС(Параметры.Вложение.ТипСодержимого, "image/");
		Команды.Добавить(Команда);

		
		ДопПараметры = Новый Структура();
		ДопПараметры.Вставить("Вложение", Параметры.Вложение);
		ДопПараметры.Вставить("Обсуждение", Параметры.Обсуждение);
		ДопПараметры.Вставить("УстановитьКартинку", Ложь);
		
		Команда = Новый ОписаниеКомандыСистемыВзаимодействия(
			Новый ОписаниеОповещения("ДобавитьФайлККарточкеТовара", ЭтотОбъект, ДопПараметры),
			НСтр("ru = 'Добавить файл в карточку товара'", "ru"));
		Команды.Добавить(Команда);
		
	КонецЕсли;
	#КонецЕсли
КонецПроцедуры

Асинх Процедура ПоместитьФайлВКарточкуТовара(Вложение, УстановитьКартинку, Форма = Неопределено, Ссылка = Неопределено)
	Поток = Ждать Вложение.ОткрытьПотокДляЧтенияАсинх();
	ЧтениеДанных = Новый ЧтениеДанных(Поток);
	Буфер = Ждать ЧтениеДанных.ПрочитатьВБуферДвоичныхДанныхАсинх();
	ДвоичныеДанные = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(Буфер);
	Если Форма <> Неопределено Тогда
		Форма.ДобавитьФайл(ДвоичныеДанные, Вложение.Наименование, УстановитьКартинку);
	Иначе
		Если Ссылка <> Неопределено Тогда
			Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
			БотСервер.ДобавитьФайлКТовару(Ссылка, Адрес, Вложение.Наименование, УстановитьКартинку);
			ОповеститьОбИзменении(Тип("СправочникСсылка.ХранимыеФайлы"));
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Функция НайтиОткрытуюФорму(НавигационнаяСсылка)
	
	Окна = ПолучитьОкна();
	Для Каждого Окно Из Окна Цикл
		
		Если Окно.Основное ИЛИ Окно.НачальнаяСтраница Тогда
			
			Продолжить;
			
		КонецЕсли;
		
		Если Окно.ПолучитьНавигационнуюСсылку() = НавигационнаяСсылка Тогда
			
			Содержимое = Окно.Содержимое;
			Если Содержимое <> Неопределено И Содержимое.Количество() > 0 Тогда
				
				Возврат Содержимое[0];
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат Неопределено;
	
КонецФункции

Процедура ДобавитьФайлККарточкеТовара(ДопПараметры) Экспорт

	Если ДопПараметры.Обсуждение.КонтекстОбсуждения <> Неопределено Тогда
		
		НавигационнаяСсылка = ДопПараметры.Обсуждение.КонтекстОбсуждения.НавигационнаяСсылка;
		Если СтрНачинаетсяС(НавигационнаяСсылка, "e1cib/data/Справочник.Товары?ref=") Тогда
			
			Форма = НайтиОткрытуюФорму(НавигационнаяСсылка);
			Если Форма <> Неопределено Тогда
			
				ПоместитьФайлВКарточкуТовара(ДопПараметры.Вложение, ДопПараметры.УстановитьКартинку, Форма);
				Возврат;
				
			КонецЕсли;
						
		КонецЕсли;
		
	Иначе
		
		Параметры = Новый Структура();
		Параметры.Вставить("РежимВыбора", Истина);
		ФормаВыбора = ПолучитьФорму("Справочник.Товары.ФормаВыбора", Параметры);
		
		ПараметрыОписанияОповещения = Новый Структура();
		ПараметрыОписанияОповещения.Вставить("Вложение", ДопПараметры.Вложение);
		ПараметрыОписанияОповещения.Вставить("УстановитьКартинку", ДопПараметры.УстановитьКартинку);
		ФормаВыбора.ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ПослеЗакрытияФормыВыбора", ЭтотОбъект, ПараметрыОписанияОповещения);
		
		ФормаВыбора.Открыть();
		
	КонецЕсли;
	
КонецПроцедуры

Процедура ПослеЗакрытияФормыВыбора(РезультатЗакрытия, ДопПараметры) Экспорт
	
	Если РезультатЗакрытия <> Неопределено Тогда
		
		Форма = Неопределено;
		
		НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(РезультатЗакрытия);
		Если НавигационнаяСсылка <> "" Тогда
			
			Форма = НайтиОткрытуюФорму(НавигационнаяСсылка);
			
		КонецЕсли;
		
		ПоместитьФайлВКарточкуТовара(ДопПараметры.Вложение, ДопПараметры.УстановитьКартинку, Форма, РезультатЗакрытия);

	КонецЕсли;
	
КонецПроцедуры
